/*
 * Agence.h
 *
 *  Created on: 23 mars 2012
 *      Author: root
 */

#ifndef AGENCE_H_
#define AGENCE_H_
#include <string>
#include "Vehicule.h"
#include "VehiculeUtilitaire.h"
#include "VehiculeTouristique.h"
#include "Client.h"
#include "Reservation.h"
#include "RendreVehicule.h"
#include "Parking.h"


using namespace std;

class Agence {
private:

	long NumAgence;
	long Tel;
	long IdentifiantAgent;
	string NomAgence;
	string AdresseAgence;
	string NomAgent;
	string Login;
	string Password;
	string ClientFileName;
	string VehiculeFileName;
	string Vehicule_utilitaireFileName;
	string Vehicule_touristiqueFileName;
	string RendreVehiculeFileName;
	string ReserverVehiculeFileName;
	string AgenceFileName;
	string ParkingFileName;
	string FileNameTemp;
public:

	Agence();
	Agence(string,long,string,long,string,long,string,string);
	virtual ~Agence();

//les getteurs et les setteurs

	long getNumAgence()const;
	void setNumAgence(long);

	long getTel()const;
	void setTel(long);

	long getIdentifiantAgent()const;
	void setIdentifiantAgent(long);

	string getNomAgence()const;
	void setNomAgence(string);

	string getNomAgent()const;
	void setNomAgent(string);

	string getAdresseAgence()const;
	void setAdresseAgence(string);

	string getLogin()const;
	void setLogin(string);

	string getPassword()const;
	void setPassword(string);

//les Methodes:

	int IdentifierAgent(string, string);//ok

	bool VerifierClient(long);

	bool AjouterClient(const Client&);//ok

	bool AjouterVehicule(const Vehicule&);//ok
	bool AjouterVehiculeUtilitaire(const VehiculeUtilitaire&);//ok
	bool AjouterVehiculeTouristique(const VehiculeTouristique&);//ok

	bool AfficherParking();//ok
	bool SortieVehiculeMoin(string);
	bool SortieVehiculeUtilitaireMoin(string);
	bool SortieVehiculeTouristiqueMoin(string);
	bool EntrerVehiculePlus(long);

	bool TesterEtatDeDisponibiliteReserver(string);
	bool ChangerEtatDeDisponibiliteReserver(string);
	bool ReserverVehicule(const Reservation&);//ok
	
	bool ChangerEtatDeDisponibiliteReserverTouristique(string);
	bool TesterEtatDeDisponibiliteReserverTouristique(string);
	bool ReserverVehiculeTouristique(const Reservation&);//ok
	
	bool ChangerEtatDeDisponibiliteReserverUtilitaire(string);
	bool TesterEtatDeDisponibiliteReserverUtilitaire(string);
	bool ReserverVehiculeUtilitaire(const Reservation&);//ok
	

	bool RendreVehicul(const RendreVehicule&);//ok
	bool TesterEtatDispoVehi(string);
	bool ChangeEtatDispoVehiRendu(string, long);
	
	bool RendreVehiculUtilitaire(const RendreVehicule&);//ok
	bool TesterEtatDispoVehiUtili(string);
	bool ChangerEtatDispoVehiUtiliRendu(string, long);
	
	bool RendreVehiculTouristique(const RendreVehicule&);//ok
	bool TesterEtatDispoVehiTouristique(string);
	bool ChangerEtatDispoVehiTouriRendu(string, long);

	bool AfficherVehicule();//ok
	bool AffichervehiculeUtilitaire(float);//ok
	bool AfficherVehiculeTouristique(long);//ok


	friend ifstream& operator>> (ifstream& , Agence&);//ok
	friend istream& operator>> (istream&, Agence& );
	friend ofstream& operator<< (ofstream& , const Agence&);//ok
	friend ostream& operator<< (ostream& , const Agence&);

	};
	ostream& operator<< (ostream& , const Agence&);
	ifstream& operator>> (ifstream& , Agence&);//ok
	istream& operator>> (istream&, Agence& );
	ofstream& operator<< (ofstream& , const Agence&);//ok

	#endif /* AGENCE_H_ */
